package org.example.controller;

import cn.hutool.core.io.IoUtil;
import org.example.pojo.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;

/**
 * ClassName: UserController_1
 * Package: org.example.controller
 * Description:
 *
 * @Author liu
 * @Create 2025/5/14 19:38
 * @ Version 1.0
 */

@RestController//表示当前类是一个请求处理类
public class UserController_1 {

    @RequestMapping("/list")//标识请求路径
    public List<User> list(){
        //1.加载并读取文件
        /**
         * this.getClass()：获取当前类（UserController_1）的 Class 对象。
         * .getClassLoader()：获取该类的类加载器（ClassLoader），用于加载类路径下的资源文件。
         * .getResourceAsStream("user.txt")：通过类加载器将类路径（通常是 src/main/resources）下的 user.txt 文件以输入流的形式打开。
         * InputStream in：将资源文件的输入流保存到变量 in 中，后续可以通过这个流读取文件内容。
         */
        InputStream in = this.getClass().getClassLoader().getResourceAsStream("user.txt");
        //运用IoUtil工具类，读取每行输入流中的数据s(输入流，字节码，存储的集合)
        ArrayList<String> lines = IoUtil.readLines(in, StandardCharsets.UTF_8, new ArrayList<>());

        //2.解析数据，封装成对象 --> 集合
        List<User> userList = lines.stream().map(line -> {
            String[] parts = line.split(",");
            Integer id = Integer.parseInt(parts[0]);
            String username = parts[1];
            String password = parts[2];
            String name = parts[3];
            Integer age = Integer.parseInt(parts[4]);
            LocalDateTime updateTime = LocalDateTime.parse(parts[5], DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

            return new User(id, username, password, name, age, updateTime);
        }).toList();

        //3.响应数据
        //return JSONUtil.toJsonStr(userList, JSONConfig.create().setDateFormat("yyyy-MM-dd HH:mm:ss"));
        return userList;
    }


}